# -*- coding: utf-8 -*-
# 如果你的程序（包括注释）中包含中文，请加上上面这一行，用于指明编码（utf-8）。
# #号开头的行都是注释。

# 如何编辑本程序：
#     用任何文本编辑器均可编辑。

# 如何运行本程序：
#     在终端中，运行：python p207_while.py

# 用for和while都能实现循环。
# for一般用于遍历列表、字典等复合型数据结构。
# while一般用于其它场合的循环。

# 计算斐波那契数列：
f_series = [1,1]
n = 2
while n < 10:
    f_series.append(f_series[n-2] + f_series[n-1])
    n += 1
# while后面跟布尔表达式。循环体中一定要有语句使得该布尔表达式最终为False，否则就退不出循环了。
# 例外：循环体中另有break语句。

for x in f_series:
    print(x, end=' ', flush=True)
# end参数用于改变默认的换行行为。flush用于及时刷新。

print()

# 用break语句退出循环。
f_series = [1,1]
n = 2
while True:
    f_series.append(f_series[n-2] + f_series[n-1])
    n += 1
    if n == 10:
        break
        
# 用continue语句终止本次循环，直接开始下次循环。
import math  # 导入math模块，因为要用到该模块中的sqrt函数。
n = 1
sum = 0
while n <= 100:
    # 忽略完全平方数。
    if n == (int(math.sqrt(n))**2):
        n += 1
        continue
    else:
        sum += n
        n += 1
print(sum)

# for循环中也可以有break和continue，意思与while循环中的一样。
scores = {
    'alice': 80,
    'bob': 59,
    'charlie': 65,
    'david': 70,
    }
for s in scores.keys():
    if scores[s] >= 60:
        continue
    else:
        scores[s] = 60
print(scores)
























